package com.hbnu.iostream;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

/**
 * 需求：使用字节输入流读取指定文件中的内容，并输出到控制台
 *
 * @author kittychen
 * @since 2025-10-11 上午 9:06
 */
public class InputStreamDemo {

    public static void main(String[] args) {
        // 1、准备文件对象
        String path = "E:" + File.separator + "2310" + File.separator + "2310.txt";

        File file = new File(path);

        // 2、准备流资源
        InputStream inputStream = null;

        try {
            inputStream = new FileInputStream(file);  // 创建字节输入流对象，同时关联文件

            // 3、读取数据
            byte[] bytes = new byte[1024];  // 创建字节数组，用于存储读取到的数据
            // int len = inputStream.read(bytes);  // 将读取到的数据存储到字节数组中，并返回读取到的字节数

            // 一个字节一个字节的读
            int len = 0;
            int temp = 0;
            while ((temp = inputStream.read()) != -1) {
                bytes[len++] = (byte) temp;
            }

            System.out.println(new String(bytes, 0, len));
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 4、关闭流资源
            try {
                if (inputStream != null) {
                    inputStream.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
